package analyser;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.cn.smart.SmartChineseAnalyzer;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class Analyser {

    public List<String> analyse(String str) {
        List<String> result = new ArrayList();
        Analyzer analyzer = new SmartChineseAnalyzer(true);
        try {
            TokenStream tokenStream = analyzer.tokenStream("field", str);
            CharTermAttribute term=tokenStream.addAttribute(CharTermAttribute.class);
            tokenStream.reset();
            while( tokenStream.incrementToken() ){
                result.add( term.toString() );
            }
            tokenStream.end();
            tokenStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return result;
    }

    public static void main(String[] args) {
        Analyser analyser = new Analyser();
        String str = "一线城市 5 个：　　北京(全国政治、文化、教育中心)　　上海(全国经济中心)　　广州(经济发达，中国第三大城市)　　深圳(经济发达、特区城市)　　天津(重要经济大港)二线发达城市 8 个：　　杭州(经济发达、副省级、强省省会)　　南京(经济发达、副省级、强省省会)　　济南(经济发达、副省级、强省省会)　　重庆(直辖市，西部中心城市)　　青岛(经济发达、计划单列市)　　大连(经济发达、计划单列市)　　宁波(经济发达、计划单列市)　　厦门(经济发达、计划单列市)二线中等发达城市 15 个：　　成都(经济发展较好、区域中心、副省级省会)　　武汉(经济发展较好、区域中心、副省级省会)　　哈尔滨(经济发展较好、区域中心、副省级省会)　　沈阳(经济发展较好、区域中心、副省级省会)　　西安(区域中心、副省级省会)　　长春(区域中心、副省级省会)　　长沙(经济发展较好、地级市省会)　　福州(经济发展较好、地级市省会)　　郑州(经济发展较好、地级市省会)　　石家庄(经济发展较好、地级市省会)　　苏州(经济强市、中国地级市经济最强市)　　佛山(经济强市)　　东莞(经济强市)　　无锡(经济强市)　　烟台(经济强市)　　太原(经济强市、地级市省会)二线发展较弱城市：　　合肥 (地级市省会)　　南昌 (地级市省会)　　南宁 (地级市省会)　　昆明 (地级市省会)　　温州(重要的经济城市)　　淄博 (重要的工业城市)　　唐山(河北经济强市)　三线城市：　　乌鲁木齐(新疆自治区首府)　　贵阳(贵州省会)　　海口(海南省会)　　兰州(甘肃省会)　　银川(宁夏自治区首府)　　西宁(青海省会)　　呼和浩特(内蒙古首府)　　泉州(福建经济第一强市)　　包头(内蒙古第一大城市，经济第二强市)　　南通(江苏经济强市)　　大庆(黑龙江经济强市)　　徐州(江苏经济强市)　　潍坊(山东经济强市)　　常州(江苏经济强市)　　鄂尔多斯(内蒙古经济第一强市)　　绍兴(浙江经济强市)　　济宁(山东经济强市)　　盐城(江苏经济强市)　　邯郸(河北经济第三强市)　　临沂(山东经济强市)　　洛阳(河南经济强市、古都)　　东营(山东经济强市)　　扬州(江苏经济强市)　　台州(浙江经济强市)　　嘉兴(浙江经济强市)　　沧州(河北经济强市)　　榆林(陕西经济第二强市)　　泰州(江苏经济强市)　　镇江(江苏经济强市)　　昆山(全国百强县第一名)　　江阴(全国百强县第二名)　　张家港(全国百强县第三名)　　义乌(浙江经济强市县级市)　　金华(浙江经济强市)　　保定(河北经济强市)　　吉林(吉林经济第二强市)　　鞍山(辽宁经济第三强市)　　泰安(山东经济强市)　　宜昌(湖北经济第二强市)　　襄阳(湖北经济第三强市)　　中山(广东经济强市)　　惠州(广东经济强市)　　南阳(河南经济强市)　　威海(山东经济强市)　　德州(山东经济强市)　　岳阳(湖南经济第二强市)　　聊城(山东经济强市)　　常德(湖南经济强市)　　漳州(福建经济第四强市)　　滨州(山东经济强市)　　茂名(广东经济强市)　　淮安(江苏经济强市)　　江门(广东经济强市)　　芜湖(安徽经济第二强市)　　湛江(广东经济强市)　　廊坊(河北经济强市)　　菏泽(山东经济强市)　　柳州(广西经济第二强市)　　宝鸡(陕西第二大城市、经济第四强市)　　珠海(特区、广东经济第十强市)　　绵阳(四川第二大城市)　四线城市：　　株洲(湖南经济第五强市)　　枣庄(山东经济第十五强市)　　许昌(河南经济第四强市)　　通辽(内蒙古经济第四强市)　　湖州(浙江经济第八强市)　　新乡(河南经济第五强市)　　咸阳(陕西经济第三强市)　　松原(吉林经济第三强市)　　连云港(江苏经济第十二强市)　　安阳(河南经济第六强市)　　周口(河南经济第七强市)　　焦作(河南经济第八强市)　　赤峰(内蒙古经济第五强市)　　邢台(河北经济第七强市)　　郴州(湖南经济第六强市)　　宿迁(江苏经济第十三强市)　　赣州(江西经济第二强市)　　平顶山(河南经济第九强市)　　桂林(广西经济第三强市)　　肇庆(广东经济第十一强市)　　曲靖(云南经济第二强市)　　九江(江西经济第三强市)　　商丘(河南经济第十强市)　　汕头(广东经济第十二强市)　　信阳(河南经济第十一强市)　　驻马店(河南经济第十二强市)　　营口(辽宁经济第四强市)　　揭阳(广东经济第十三强市)　　龙岩(福建经济第五强市)　　安庆(安徽经济第三强市)　　日照(山东经济第十五强市)　　遵义(贵州经济第二强市)　　三明(福建经济第六强市)　　呼伦贝尔(内蒙古经济第六强市)　　长治(山西经济第二强市)　　湘潭(湖南经济第七强市)　　德阳(四川经济第三强市)　　南充(四川地级市)　　乐山(四川地级市)　　达州(四川地级市)　　盘锦(辽宁地级市)　　延安(陕西地级市)　　上饶(江西地级市)　　锦州(辽宁地级市)　　宜春(江西地级市)　　宜宾(四川地级市)　　张家口(河北地级市)　　马鞍山(安徽地级市)　　吕梁(山西地级市)　　抚顺(辽宁地级市)　　临汾(山西地级市)　　渭南(陕西地级市)　　开封(河南地级市，古都)　　莆田(福建地级市)　　荆州(湖北地级市)　　黄冈(湖北地级市)　　四平(吉林地级市)　　承德(河北地级市)　　齐齐哈尔(黑龙江地级市)　　三门峡(河南地级市)　　秦皇岛(河北地级市)　　本溪(辽宁地级市)　　玉林(广西地级市)　　孝感(湖北地级市)　　牡丹江(黑龙江地级市)　　荆门(湖北地级市)　　宁德(湖南地级市)　　运城(山西地级市)　　绥化(黑龙江地级市)　　永州(湖南地级市)　　怀化(湖南地级市、湘西第一大市)　　黄石(湖北地级市)　　泸州(四川地级市)　　清远(广东地级市)　　邵阳(湖南地级市)　　衡水(河北地级市)　　益阳(湖南地级市)　　丹东(辽宁地级市、中国口岸第一大市)　　铁岭(辽宁地级市)　　晋城(山西地级市)　　朔州(山西地级市)　　吉安(江西地级市)　　娄底(湖南地级市)　　玉溪(云南地级市)　　辽阳(辽宁地级市)　　南平(福建地级市)　　濮阳(河南地级市)　　晋中(山西地级市)　　资阳(四川地级市)　　都江堰(四川县级市)　　攀枝花(四川地级市)　　衢州(浙江地级市)　　内江(四川地级市)　　滁州(安徽地级市)　　阜阳(安徽地级市)　　十堰(湖北地级市)　　大同(山西地级市)　　朝阳(辽宁地级市)　　六安(安徽地级市)　　宿州(安徽地级市)　　通化(吉林地级市)　　蚌埠(安徽地级市)　　韶关(广东地级市)　　丽水(浙江地级市)　　自贡(四川地级市)　　阳江(广东地级市)　　毕节(贵州地级市)五线城市：　　拉萨(西藏自治区首府)　　克拉玛依(新疆经济第二强市，地级市)　　库尔勒(新疆第二大城市，县级市、州府)　　昌吉(新疆县级市、州府)　　哈密(新疆县级市、地区行署所在地)　　伊宁(县级市、州府)　　喀什(新疆县级市、地区行署所在地)　　阿克苏(新疆县级市、地区行署所在地)　　石河子(新疆兵团第一大城市)　　晋江(福建经济发达县级市)　　增城(广东经济发达县级市)　　诸暨(浙江经济发达县级市)　　丹阳(江苏经济发达县级市)　　玉环(浙江经济发达县)　　常熟(江苏经济发达县级市)　　崇明(上海经济发达县)　　余姚(浙江经济发达县级市)　　奉化(浙江经济发达县级市)　　海宁(浙江经济发达县级市)　　浏阳市(湖南县级市)　　大理(云南县级市、州府)　　丽江(云南地级市)　　普洱(云南地级市)　　保山(云南地级市)　　昭通(云南地级市)　　西昌(四川县级市、州府)　　雅安(四川地级市)　　广安(四川县级市)　　广元(四川地级市)　　巴中(四川地级市)　　遂宁(四川地级市)　　天水(甘肃第二大城市)　　酒泉(甘肃地级市)　　嘉峪关(甘肃地级市)　　武威(甘肃地级市)　　张掖(甘肃地级市)　　石嘴山(宁夏地级市)　　吴忠(宁夏地级市)　　北海(广西地级市)　　百色(广西地级市)　　虎门镇(全国第一大镇、广东东莞市建制镇)　　长安镇(广东东莞市建制镇，全国人口经济大镇)　　鳌江-龙港镇(浙江建制镇、浙最南端中心城市)　　以及其他省份的地级市及经济强县(县级市)　六线城市：　　除以上以外的所有县级市和经济强县、";
        List<String> rst = analyser.analyse(str);
        for(int i = 0; i < rst.size(); i++) {
            System.out.println(rst.get(i));
        }

    }
}
